import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mdpro.settings")
import django
django.setup()

from goods.models import GoodsChannel
import json


def get_categories():
    """
    获取商品分类菜单
    """
    # 构建空字典，用来获取出来的分类数据
    categories = {}
    # 获取所有的频道
    channels = GoodsChannel.objects.all()
    # 遍历所有的频道，在频道中找出所有的分组id
    for channel in channels:
        group_id = channel.group_id  # 当前组
        # 如果分组id不在构建的空字典中，以当前分组id为键，建立 一个字典，保存频道和子类
        if group_id not in categories:
            categories[group_id] = {'channels': [], 'sub_cats': []}
        # 获取当前频道的类别
        cat1 = channel.category  # 当前频道的类别

        # 追加当前频道
        categories[group_id]['channels'].append({
            'id': cat1.id,
            'name': cat1.name,

        })
        # 通过外键查找的方式，获取所有的二级分类
        for cat2 in cat1.category_set.all():
            # 在二级分类下创建存放三级分类的载体
            cat2.sub_cats = []
            # 通过所有二级分类，查找所有的三级分类
            for cat3 in cat2.category_set.all():
                # 把三级分类插入所关联的二级分类下
                cat2.sub_cats.append(cat3)
            # 打印一下插入的数据样式
            print(cat2.sub_cats)
            # 找出所有的二级和三级分类，并建立对应的上下级关系字典
            categories[group_id]['sub_cats'].append({
                'id': cat2.pk,
                'name': cat2.name,
                'sub_cats': [{'id': i.pk, 'name': i.name} for i in cat2.sub_cats]
            })
    return categories


if __name__ == '__main__':
    # print(get_categories())
    # print(json.dumps(get_categories()))
    #
    from qndemo.models import Actor, Movie

    actor_id = 1
    movie_id = 1

    # actor_obj = Actor.objects.filter(pk=actor_id).first()
    movie_obj = Movie.objects.get(pk=movie_id)
    #
    # print(movie_obj)
    # movie_list = actor_obj.movie.all()
    # print(movie_list)
    # if movie_obj in movie_list:
    #     print('11')
    print(movie_obj.actor_set.all().order_by('-age'))